import axios from 'axios';

export const PortfolioAPI = {
  getRecommendation: async () => {
    console.log("recommendation")
    try {
      const response = await axios.post('/api/portfolio/recommend', 
        {},
        {
        headers: {
          'Authorization': `Bearer ${localStorage.getItem('jwt_token')}`
        },
        timeout: 6000000
      });
      console.log("reponse:",response)
      // 根据后端返回的 code 判断是否成功（0 表示成功，非 0 表示失败）
      if (response.data.code !== 0) {
        // 直接抛出后端返回的错误消息
        throw new Error(response.data.message || '请求失败');
      }

      // 返回格式化后的数据（根据实际返回结构调整）
      return {
        data: response.data.data, // 假设返回数据在 data 字段中
        timestamp: response.data.timestamp || new Date().toISOString() // 如果后端未返回时间戳，使用当前时间
      };

    } catch (error) {
      // 统一捕获网络错误或业务错误
      console.error('获取投资组合推荐失败:', error.message);
      throw error; // 抛出错误由调用方处理
    }
  },
  // 回测组合收益情况
  backtestPortfolio: async ({ portfolio, start_date, end_date }) => {
    console.log("回测请求参数：", { portfolio, start_date, end_date });
    try {
      const response = await axios.post(
        '/api/portfolio/backtest',
        { portfolio, start_date, end_date },
        {
          headers: {
            'Authorization': `Bearer ${localStorage.getItem('jwt_token')}`
          },
          timeout: 600000
        }
      );
      console.log("回测结果：", response);
      if (response.data.code !== 0) {
        throw new Error(response.data.message || '回测失败');
      }

      return {
        data: response.data.data,
        timestamp: response.data.timestamp || new Date().toISOString()
      };
    } catch (error) {
      console.error('回测失败:', error.message);
      throw error;
    }
  }
};